<?php

namespace app\common\traits;

/**
 * Trait ToolTrait
 * @package app\common\traits
 */
trait ToolTrait
{

	/**
	 * curl 请求方法
	 * @param $url                   请求地址
	 * @param string $type 请求类型
	 * @param string $dataType 数据类型
	 * @param string $arr 请求数据
	 * @param false $header header
	 * @param int $timeout 超时时间
	 * @param int $connecttimeout
	 * @return mixed|string
	 */
	protected function http_curl($url, $type = "get", $dataType = "json", $arr = "", $header = false, $timeout = 120, $connecttimeout = 0)
	{
		//===1.初始化curl
		$ch = curl_init();
		//===2.设置curl的参数
		curl_setopt($ch, CURLOPT_URL, $url); //发送的路径
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回原生的（Raw）输出
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //禁用后cURL将终止从服务端进行验证
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //禁用后cURL将终止从服务端进行验证
		//curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
		//curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: test=cookie"));
		if (strtolower($type) == "post") { //post传输数据
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);
		}
		if ($header === false) {
			curl_setopt($ch, CURLOPT_HTTPHEADER, []); //启用时会将头文件的信息作为数据流输出
		} else {
			curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //启用时会将头文件的信息作为数据流输出
		}
		curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); //让cURL自己判断使用哪个版本
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $connecttimeout); //在发起连接前等待的时间，如果设置为0，则无限等待
		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //设置cURL允许执行的最长秒数
		//===3.采集
		$output = curl_exec($ch); //发送请求并获取返回值
		//===4.关闭并返回数据
		if (strtolower($dataType) == 'json') {
			if (curl_errno($ch)) {
				return curl_error($ch);
			}
			$output = json_decode($output, true);
		}
		curl_close($ch);
		return $output;
	}

	/**
	 * 随机生成手机号码
	 */
	protected function &randomMobile($n)
	{
		$tel_arr = array(
			'130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '144', '147', '150', '151', '152', '153', '155', '156', '157', '158', '159', '176', '177', '178', '180', '181', '182', '183', '184', '185', '186', '187', '188', '189',
		);
		for ($i = 0; $i < $n; $i++) {
			// $tmp[] = $tel_arr[array_rand($tel_arr)] . mt_rand(1000, 9999) . mt_rand(1000, 9999);
			$tmp[] = $tel_arr[array_rand($tel_arr)] . 'xxxx' . mt_rand(1000, 9999);
		}
		// return array_unique($tmp);
		return  $tmp;
	}

	/**
	 * 创建目录（可多级）
	 * @param string $dirc
	 * @return bool
	 */
	protected function creDirectory($dirc)
	{
		$check = false;
		try {
			if (is_dir($dirc)) {
				$check = true;
			} else {
				if (mkdir($dirc, 0777, true)) {
					$check = true;
				}
			}
		} finally {
			return $check;
		}
	}

	/** 
	 * 日志记录
	 */
	protected function logs($dir, $filename, $data = [], $Separator = ",")
	{
		if (!$dir || !$filename || !is_array($data)) return false;
		if (!is_dir($dir)) $this->creDirectory($dir);
		$content = implode($Separator, $data);
		$result = file_put_contents($dir . '/' . $filename, (date('Y-m-d h:i:s', time())) . ' ' . $content . "\r\n", FILE_APPEND | LOCK_EX);
		return $result;
	}
}
